# pip install jieba wordcloud -i https://mirrors.aliyun.com/pypi/simple/ 安装两个依赖包
import jieba
import csv
with open("d:/项目/python/爬虫/网页/豆瓣短评.csv", 'r', encoding='utf-8-sig') as csvfile:
    reader = csv.reader(csvfile)
    comment_list=list()
    for row in reader:
        comment_list.append(row[2])
# 将comment_list中的所有元素（即各个评论）连接成一个单一的字符串。每个评论之间用空格分隔。这一步是为了将所有评论合并到一起，便于后续的分词处理
comments=" ".join(comment_list) 
# jieba.cut函数会对输入的字符串comments进行中文分词。它会根据jieba内置的算法将连续的中文文本分割成一个个单独的词语
# 由于jieba.cut()返回的是一个生成器，使用list()将其转换为列表形式，以便于后续处理或查看结果
seg_list = list(jieba.cut(comments))

# 生成词语字典
word_dict=dict()
for word in seg_list:
    if len(word)<2:
        continue
    elif word in word_dict:
        word_dict[word]+=1
    else:
        word_dict[word]=1

# 按出现次数降序
import operator
times=sorted(word_dict.items(),key=operator.itemgetter(1),reverse=True)

# 写入csv
import csv
with open("d:/项目/python/制作词云/分词结果.csv", 'w',newline="", encoding='utf-8-sig') as csvfile:
    writer = csv.writer(csvfile)
    for i in times:
        writer.writerow(i)

from wordcloud import WordCloud
# 生成词云方法1
result=str()
words=list()
i=0
while times[i][1]>10:
    words.append(times[i][0])
    i+=1
result=" ".join(words)
wc=WordCloud(
    font_path="d:/项目/python/制作词云/simkai.ttf",
    background_color="white",
    width=1000,
    height=800,
    max_words=200,
    max_font_size=150
    )
word_cloud=wc.generate(result)
word_cloud.to_file("d:/项目/python/制作词云/词云.png")

# 生成词云方法2：直接使用词频字典生成词云
# 准备要生成词云的文本
filtered_word_dict = {}
for word, freq in times:
    if freq > 10:  # 根据需要调整此阈值
        filtered_word_dict[word] = freq
    else:
        break
# 创建词云对象
wc = WordCloud(
    font_path="d:/项目/python/制作词云/simkai.ttf",  # 设置字体路径以支持中文
    background_color="white",
    width=1000,
    height=800,
    max_words=200,
    max_font_size=150
)
word_cloud = wc.generate_from_frequencies(filtered_word_dict)
# 保存词云图片
word_cloud.to_file("d:/项目/python/制作词云/词云1.png")